<?php

require_once 'Pessoa.class.php';
require_once '../model/dao/Conection.class.php';
require_once '../model/dao/DBUsuario.class.php';
require_once '../model/dao/DBAmizade.class.php';
require_once '../model/dao/DBCarona.class.php';
/*@author Gabriel Bronzatti Moro*/
Class Usuario extends Pessoa {
    /* Declaração de variáveis do tipo privado devido ao encapsulamento */

    private $email;
    private $senha;
    private $conection;
    private $dbusuario;
    private $dbAmizade;
    private $dbCarona;

    public function cadastrar($nome, $email, $senha, $estado, $cidade) {
        parent::setNome($nome);
        parent::setCidade($cidade);
        parent::setEstado($estado);
        $nome = parent::getNome();
        $cidade = parent::getCidade();
        $estado = parent::getEstado();
        $this->email = $email;
        $this->senha = $senha;

        $this->conection = new Conection();
        $this->dbusuario = new DBUsuario($this->conection->getMysqli());
        $confirmacao = $this->dbusuario->insert("nome_usuario,cidade_usuario,estado_usuario,email_usuario,senha_usuario", "'" . $nome . "','" . $cidade . "','" . $estado . "','" . $email . "','" . $senha . "'");
        $this->conection->encerrarConexao();
        
        if ($confirmacao)
            return true;
        else
            return false;
    }

    public function acessarSistema($email, $senha) {
        $this->conection= new Conection();
        $this->dbusuario= new DBUsuario($this->conection->getMysqli());
        $colunas= array("nome_usuario","email_usuario","senha_usuario");
        $valores= array($email,$senha);
        $permission= $this->dbusuario->select($colunas, $valores);
        $this->conection->encerrarConexao();
       if($permission)
            parent::setNome($this->dbusuario->getNomeUser());
        
        return $permission;
    }

    public function getCaronas($nome,$email) {
        $this->conection= new Conection();
        $this->dbusuario= new DBUsuario($this->conection->getMysqli());
        $codigoUser= $this->dbusuario->recuperaCodigoUser($nome, $email);
        
        $this->dbCarona= new DBCarona($this->conection->getMysqli());
        return $this->dbCarona->selectMinhasCaronas("`hora`, `cidadeOrigem`,`cidadeDestino`,`status_carona`,`preco_carona`", $codigoUser);
    }


    public function adicionarAmigo($nomeAmigo, $emailAmigo,$nomeUsuario,$emailUsuario) {
        parent::setNome($nomeUsuario);
        $this->email= $emailUsuario;
        
        $this->conection= new Conection();
        $this->dbusuario= new DBUsuario($this->conection->getMysqli());
        $codigoAmigo= $this->dbusuario->recuperaCodigoUser($nomeAmigo, $emailAmigo);
        $codigoUser= $this->dbusuario->recuperaCodigoUser(parent::getNome(), $this->email);
        
        $this->dbAmizade= new DBAmizade($this->conection->getMysqli());
        $valores[0]= "\"".$codigoAmigo."\",";
        $valores[1]= "\"".$codigoUser."\",";
        $valores[2]= "\""."Ativo"."\"";
        
        $confirm= $this->dbAmizade->insert("`codigoAmigo_amizade`,`codigoUsuario_amizade`,`status_amizade`", $valores);
        return $confirm;   
    }
    
    public function getPerfil($nome,$email){
        $this->conection= new Conection();
        $this->dbusuario= new DBUsuario($this->conection->getMysqli());
        $elementsPerfil= $this->dbusuario->selectPerfil($nome, $email);
        $this->conection->encerrarConexao();
        return $elementsPerfil;
    }

    /* @return um email */

    public function getEmail($email) {
        $this->conection= new Conection();
        $this->dbusuario= new DBUsuario($this->conection->getMysqli());
        return $this->dbusuario->verificarEmailExistente($email);
    }

    /* seta o valor da variável email */

    public function setEmail($email) {
        $this->email = $email;
    }

    /* @return um senha */

    public function getSenha() {
        return $this->senha;
    }

    /* seta o valor da variável senha */

    public function setSenha($senha) {
       $this->senha = $senha;
    }

    /* @return um veiculos */

    public function getVeiculos() {
        return $this->$nome;
    }

    /* seta o valor da variável veiculos */

    public function setVeiculos($veiculos) {
        $this->veiculos = $veiculos;
    }

    /* @return um amigos */

    public function getAmigos($nome,$email) {
        $this->conection= new Conection();
        $this->dbusuario= new DBUsuario($this->conection->getMysqli());
        $codigoUser= $this->dbusuario->recuperaCodigoUser($nome, $email);
        
        $this->dbAmizade= new DBAmizade($this->conection->getMysqli());
        $arrayDeCodigos= $this->dbAmizade->select("`codigoAmigo_amizade`", $codigoUser);
        
        $indice=0;
        $size= sizeof($arrayDeCodigos);
        $arrayDeNome=null;
        for($indice;$indice<$size;$indice++){
        $arrayDeNome[$indice]= $this->dbusuario->recuperaNomeUser($arrayDeCodigos[$indice]);    
        }
        
        $arrayInteira[0]= $arrayDeCodigos;
        $arrayInteira[1]= $arrayDeNome;
        
        return $arrayInteira;
    }

    /* seta o valor da variável amigos */

    public function setAmigos($amigos) {
        $this->amigos = $amigos;
    }
    public function getCodigo($nome,$email){
        $this->conection = new Conection();
        $this->dbusuario = new DBUsuario($this->conection->getMysqli());
        return $this->dbusuario->recuperaCodigoUser($nome, $email);
    }
}
